;(function ($, window, document, undefined) {
	//创建构造函数，保存参数
	var BackTop = function (ele, opts) {
		//保存jq节点
		this.$element = ele;
		//默认CSS样式参数
		this.defaults = {
			"position": "fixed",
			"bottom": "10px",
			"right": "50px",
			"z-index": "1030",
			"cursor": "pointer",
			"display": "none"
		};
		this.options = $.extend({}, this.defaults, opts);
	};
	//加入方法
	//回到顶部动作
	BackTop.prototype.goTop = function(){
		$('html,body').animate({
			scrollTop: 0
		}, 'slow');
	};
	//初始化函数
	BackTop.prototype.init = function(){
		this.$element.css(this.options)
					 .attr('title', '回到顶部')
					 .html('<i class="fa fa-angle-double-up fa-3x"></i>');
	};
	//设置监听
	BackTop.prototype.setListener = function(){
		//监听点击事件   
		//bind(this)作用是改变函数的this上下文
		this.$element.on('click', function(event) {
			this.goTop();
		}.bind(this));
		
		//监听页面滚动
		$(window).scroll(function() {
			//滚动到页面离顶部距离大于100px时【回到顶部】按钮出现
			$(document).scrollTop() > 100? this.$element.css('display', '') : this.$element.css('display', 'none');

		}.bind(this));
		
		//返回选中的节点jq对象
		return this.$element
	};
	
	//拓展jq插件，定义一个pagescroll()方法用于初始化
	$.fn.pagescroll = function (opts) {
		//使用构造函数,传入this和需要的配置
		//this为选中的节点的jq对象
		var backtop = new BackTop(this, opts);
		
		//调用初始化函数
		backtop.init();
		
		//设置监听事件，并在最后返回以保持jq链式调用的特点
		return backtop.setListener()
	}

})(jQuery, window, document)